<script lang="ts">
	import type { Component } from 'svelte';

	// 定义组件属性类型（确保 src 为必填项）
	export let src: string;
	export let size: number | string = '1em';
	export let color: string = 'currentColor';

	// 批量导入所有 SVG 图标（Vite 特性）
	const icons = import.meta.glob('$lib/assets/icons/**/*.svg', {
		eager: true,
		import: 'default'
	});

	// 构建图标路径映射（支持多级目录）
	const getIcon = (src: string): Component => {
		const path = `/src/lib/assets/icons/${src}.svg`;
		const icon = icons[path] as Component;

		if (!icon) {
			throw new Error(`图标不存在: ${src}`);
		}
		return icon;
	};

	// 获取当前图标组件（直接使用变量存储组件，无需 svelte:component）
	const IconComponent = getIcon(src);
</script>

<!-- 直接渲染组件（Runes 模式下组件默认支持动态渲染） -->
<IconComponent {...$$props} width={size} height= {size} color={color}/>
